package com.kexio.enterprise.observability.logging.statistics;

import com.kexio.enterprise.observability.logging.annotation.OperateLog;

import java.util.Map;

/**
 * 日志统计信息
 * 
 * @author Kexio
 * @since 1.0.0
 */
public class LogStatistics {
    private long totalLogs;
    private long successLogs;
    private long failureLogs;
    private Map<String, Long> moduleStats;
    private Map<String, Long> operationStats;
    private Map<OperateLog.OperationType, Long> typeStats;
    private Map<String, Long> userStats;
    private double avgExecutionTime;

    // Getters and Setters
    public long getTotalLogs() { return totalLogs; }
    public void setTotalLogs(long totalLogs) { this.totalLogs = totalLogs; }
    
    public long getSuccessLogs() { return successLogs; }
    public void setSuccessLogs(long successLogs) { this.successLogs = successLogs; }
    
    public long getFailureLogs() { return failureLogs; }
    public void setFailureLogs(long failureLogs) { this.failureLogs = failureLogs; }
    
    public Map<String, Long> getModuleStats() { return moduleStats; }
    public void setModuleStats(Map<String, Long> moduleStats) { this.moduleStats = moduleStats; }
    
    public Map<String, Long> getOperationStats() { return operationStats; }
    public void setOperationStats(Map<String, Long> operationStats) { this.operationStats = operationStats; }
    
    public Map<OperateLog.OperationType, Long> getTypeStats() { return typeStats; }
    public void setTypeStats(Map<OperateLog.OperationType, Long> typeStats) { this.typeStats = typeStats; }
    
    public Map<String, Long> getUserStats() { return userStats; }
    public void setUserStats(Map<String, Long> userStats) { this.userStats = userStats; }
    
    public double getAvgExecutionTime() { return avgExecutionTime; }
    public void setAvgExecutionTime(double avgExecutionTime) { this.avgExecutionTime = avgExecutionTime; }
}
